incron est un outil qui exécute des actions selon des événements du système de fichiers.
Il est composé de :
Fonctionnement : le fonctionnement est proche de cron :
L'utilisation est proche de cron.
Si le fichier /etc/incron.allow existe, alors seuls les utilisateurs qui sont dans ce fichier ont le droit d'utiliser incron. Ainsi, il vous faut soit :
sudo rm -f /etc/incron.allow
echo $USER | sudo tee /etc/incron.allow
Lancer incrontab pour assigner des actions en fonction des fichiers/dossiers paramétrés :
incrontab -e
Le format de saisie de incrontab est :
<chemin> <type d'événement> <commande à exécuter>
Exemple : /home/MonUser/download IN_CLOSE_WRITE /home/td/incron-script.sh
Liste des types d'événements :
| type d'événement | Signification |
|---|---|
| IN_ACCESS | File was accessed (read) |
| IN_ATTRIB | Metadata changed (permissions, timestamps, extended attributes, etc.) |
| IN_CLOSE_WRITE | File opened for writing was closed. on attend que le fichier soit cloturé, dans notre cas, que le téléchargement SOIT TERMINE avant de déclencher la commande ou le script |
| IN_CLOSE_NOWRITE | File not opened for writing was closed |
| IN_CREATE | File/directory created in watched directory. Attention : la commande est déclenchée lorsque le fichier est créé MAIS pas "terminé". Dans le cas d'un téléchargement qui dure 2 mn dans notre répertoire "download", la commande se déclencherait dès la création du fichier SANS ATTENDRE LA FIN DU TELECHARGEMENT. L'operation de déplacement échouerait. |
| IN_DELETE | File/directory deleted from watched directory |
| IN_DELETE_SELF | Watched file/directory was itself deleted |
| IN_MODIFY | File was modified |
| IN_MOVE_SELF | Watched file/directory was itself moved |
| IN_MOVED_FROM | File moved out of watched directory |
| IN_MOVED_TO | File moved into watched directory |
| IN_OPEN | File was opened |
Pour utiliser contextuellement les fichiers/dossiers, des "Wildcard" sont disponibles :
| Wildcard | Signification |
|---|---|
| $$ | dollar sign |
| $@ | watched filesystem path (see above) |
| $# | event-related file name |
| $% | event flags (textually) |
| $& | event flags (numerically) |